前端analysis | 知其所以然

tomcat webapps 和 target

2025-05-20

webappstarget 是在 Java Web 应用开发和部署中经常遇到的两个目录,它们的功能和作用是不同的。以下是它们的详细区别:


🔸 webapps —— Tomcat 的部署目录

  • 位置: 位于 Tomcat 安装目录下,例如:$TOMCAT_HOME/webapps

  • 作用: Tomcat 在启动时会自动扫描该目录下的 .war 文件或已解压的 Web 应用文件夹并进行部署。

  • 使用方式:

    • 把编译好的 .war 文件放到 webapps 中,Tomcat 会自动解压并部署。
    • 也可以直接将解压后的 Web 应用目录放入 webapps,无需 .war 文件。
  • 示例:

    1
    2
    $TOMCAT_HOME/webapps/myapp.war
    $TOMCAT_HOME/webapps/myapp/ (解压后的文件夹)

🔸 target —— Maven/Gradle 构建输出目录

  • 位置: 位于你的项目目录下,例如:/your-project/target
  • 作用: 存放项目构建后的输出内容,包括 .class 文件、打包好的 .war 文件、临时构建文件等。
  • 自动生成: 每次运行 Maven 的 mvn packagemvn install 时,都会生成或更新。
  • 不能直接部署: target 是本地构建目录,Tomcat 不会读取它,除非你手动将 .war 拷贝到 webapps 中。

🔄 常见流程:

  1. 开发完成后,使用 Maven 构建项目:

    1
    mvn clean package
  2. 构建后会在 target/ 下生成 .war 文件,比如:target/myapp.war

  3. 手动将该 .war 文件拷贝到 Tomcat 的 webapps/ 目录:

    1
    cp target/myapp.war $TOMCAT_HOME/webapps/
  4. 启动 Tomcat,自动部署。


✅ 总结对比表:

项目 webapps target
所属 Tomcat 开发构建工具 (如 Maven)
功能 Tomcat 部署目录 项目构建输出目录
使用方式 Tomcat 启动时自动读取 需要手动拷贝或通过插件部署
是否自动生成 否,需要你放置文件 是,构建时自动生成
内容 .war 或 Web 应用目录结构 .class 文件、.war 文件等

如需自动将 target/*.war 部署到 Tomcat,可以使用插件(如 Maven 的 tomcat7-maven-plugin)进行自动部署。

要通过浏览器访问部署在 Tomcat 的 webapps 目录中的 Web 应用

  1. Tomcat 正常启动;
  2. Web 应用已正确部署到 webapps
  3. 使用正确的 URL 进行访问。

✅ 一、访问请求的基本格式:

1
http://<服务器IP>:<端口>/<项目名>/<资源路径>
  • 服务器IP:部署 Tomcat 的主机 IP,开发本地通常是 localhost127.0.0.1
  • 端口:默认是 8080,除非你改了 server.xml
  • 项目名:等于部署在 webapps.war 或文件夹的名字(除非是 ROOT)
  • 资源路径:Web 应用中的请求路径,比如 JSP、Servlet、Spring 控制器路径等

🔸 二、示例说明

假设你的 Tomcat 安装在本地,端口是默认的 8080webapps 下有一个应用叫 myapp

示例 1:访问首页

1
http://localhost:8080/myapp/

默认会加载 web.xml 中配置的 welcome-file(比如 index.jsp


示例 2:访问 JSP 页面

1
http://localhost:8080/myapp/login.jsp

示例 3:访问 Servlet

如果在 web.xml 中定义了一个 Servlet 映射路径 /login,那么可以通过:

1
http://localhost:8080/myapp/login

示例 4:访问 Spring MVC Controller

如果你用的是 Spring MVC,并在 Controller 中写了路径:

1
@RequestMapping("/user/list")

则访问地址是:

1
http://localhost:8080/myapp/user/list

✅ 三、特殊情况:ROOT 项目

如果你将应用部署为:

1
webapps/ROOT/

或:

1
webapps/ROOT.war

那么你就不需要写项目名,直接访问:

1
http://localhost:8080/

✅ 四、排查访问不了的问题

问题 检查方向
页面 404 路径是否正确、应用是否成功部署
端口访问不了 Tomcat 是否启动、端口是否防火墙拦截
报错页面 JSP/Servlet/Controller 是否有异常

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏